Spring boot JpaSystemException이 뭐야..? 걸음수에 따른 각 학교별 유저의 랭킹을 매번 조회하기에는 성능 저하가 크기 때문에 일정 간격으로 유저의 랭킹을 데이터베이스에 저장시키는 작업을 한다. 그 중에서도 데이터베이스에 좀 더 초점을 맞췄기 때문에 IdClass를 이용해 복합키를 표현했다. UserRank.java UserRankId.java 이런식으로 JPA에서 제공하는 메소드 쿼리를 이용해 유저 랭킹을 조회한다. 직접 postma... Javaback endSpring bootexception프로젝트trouble shootingJPAJPA Spring Entity 작성시 사용하는 어노테이션 1. @Entity 엔티티로 사용할 클래스에 엔티티임을 명시하는 어노테이션 2. @Table @Table(name = "board") name 속성을 이용해서 해당 엔티티가 매핑하는 데이터베이스 테이블이 무엇인지 지정 이렇게 작성된다면, 해당 Board 클래스는 데이터베이스에 "board" 테이블에 저장된다. 그렇다면 이 둘의 차이는 무엇일까? @Entity(name ="")의 경우 말그대로... Spring bootSpringSpring 배포 과정에서 발생했던 issue 모음 백엔드를 맡은 내가 배포 과정에서 겪었던 문제들과 이에 대한 해결 과정을 기록하며 추 후 작업 시 개선해야 할 점을 생각하고자 한다. local 환경의 IntelliJ 에서 Spring Boot를 build 한 뒤 이를 Dockerfile로 이미지화 하여 내 Docker Hub에 정상적으로 올렸다. 이 후 새로 만든 AWS EC2에서 docker를 설치 하고, Docker Hub에 올린 이미... awsaws ec2Spring bootdockerSpring boot Spring Boot 채팅 구현(SockJS,Stomp) 1. 환경 설정 및 기본 동작 구현 configureMessageBroker() subscribe, publish url을 설정합니다. registerStompEndpoints() SockJS 생성 endpoint를 지정합니다. 채팅창 화면과 스크립트 코드입니다. 화면에서 보낸 JSON data를 파라미터(MessageDTO)를 통해 받을수있습니다. convertAndSend() 메소드를 통해 첫번째 파라미터의 값(/topic... Spring bootSpring boot [Spring Boot] V-RIS 개발 일지(2) - MySQL 연동, Spring Data JPA를 이용한 간단한 회원 관리 시스템 및 오류 수정 우선 spring 프로젝트를 만들고 MySQL과의 연동을 위해 아래의 dependency를 build.gradle에 추가해준다. 그 후 application.properties에 아래의 코드를 추가한다. spring.jpa.hibernate.ddl-auto=[ ] create : 기존 테이블을 삭제하고 새로 생성 [ DROP + CREATE ] create-drop : CREATE 속성에 추... 웹 개발IntelliJSpring bootIntelliJ | 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 4.4 전체 조회 PostsRepository에 쿼리 추가 PostsRepository 인터페이스에 쿼리를 추가해야 한다. JPA에서 기본적으로 제공하지 않는 메소드는 쿼리를 작성해서 만들 수 있다. PostsService readOnly = true 조회 기능만 가능. 트랜잭션 범위는 유지하고 조회 기능만 남겨두기 때문에 조회 속도가 개선된다. PostsListResponseDto 변환 -> List로 반환... 스프링 부트와 AWS로 혼자 구현하는 웹 서비스Spring bootSpring boot AWS CodeDeploy를 이용한 자동 배포 시 환경변수 주입하기 + Spring Boot 이렇게 해두고 개발 서버에 환경변수를 등록해 놓았는데 CodeDeploy는 배포 과정에서 이 변수들을 주입받지 못하였다. 그래서 그냥 배포 후 실행할 스크립트를 서버에 저장해두고(이렇게 하면 변수들을 public한 곳에서 숨긴 채로 배포할 수 있으니까?) CodeDeploy의 hook이 실행될 때 그 파일을 실행하도록 하였는데 정상적으로 작동하지 않았다. 따라서 어쩔 수 없이 프로젝트 디렉토... awsCodeDeploySpring bootCodeDeploy Springboot Controller 테스트 해보기 1탄 (Mock, MockMvc) 실무에서 단위테스트로 간단한 진행만 하지 TDD로 개발은 하지 않고 있는데 개발하면 할 수록 중요성이 너무 느껴서 열심히 사용해 보려고 한다. 네트워크, 데이터베이스 등에 의존하고 있는 메서드를 테스트하기 위해 가짜 객체를 만들어서 진행하는 테스트 Mock 객체를 만드는 번거로움을 줄여주기 위한 프레임워크 @ExtendWith(MockitoExtension.class): Mockito의 Mo... Spring bootSpring boot Spring Template Engine Spring Template Engine은 view를 만드는데 사용합니다. Spring Boot가 자동적으로 인식을 해서 추가하며 사용자 정의 Template Engine을 사용하려면 직접 다 추가해줘야 합니다. 대표적으로 Spring이 자동적으로 지원하는 템플릿은 Thymeleaf Mustache Groovy 등이 있습니다. Spring이 등록하는 Bean Name을 보는법은 아래 코드와 ... Spring bootspring mvcSpringSpring 6편 JAVA spring boot study - MVC와 템플릿 엔진 mvc란 model / view / controller 의 개념입니다. view와 controller는 과거에 분리되어 있지 않았다고 합니다. (저는 2년차 주니어 개발자이기에 직접적으로 와닿진 않네요!) view에서 모든걸 다 했었습니다. 그것을 model1방식이라고 했다고 합니다. 과거에는 view안에서 비즈니스로직도 다 있고 굉장히 복잡했습니다.그래서 하나의 파일이 굉장히 커지고 유지보... Java템플릿 엔진Spring bootMVCJava [Spring Boot] 스프링 컨테이너와 스프링 빈 1. 스프링 컨테이너 생성 3. 스프링 빈 조회 - 기본 4. 스프링 빈 조회 - 동일한 타입이 둘 이상 5. 스프링 빈 조회 - 상속 관계 8. 스프링 빈 설정 메타 정보 - BeanDefinition 스프링 컨테이너 생성 ApplicationContext는 인터페이스이며, 스프링 컨테이너라 한다. 스프링 컨테이너는 XML을 기반 또는 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. ... Spring bootSpring boot 스프링 JPA 양방향 연관관계의 이해 - 영속성 전이 cascade commentList, postImageList, postLikeList 와 같은 일대다 리스트를 보면 cascade 옵션이 달려있는 것을 확인할 수 있다. comment(댓글) 의 경우 post(게시글) 가 삭제될 경우 post와 연관된 comment 가 연쇄적으로 삭제하기 위해 cascade = CascadeType.REMOVE 을 설정하였다. postImage(게시글 이미지)의 경우 생... JPASpring기록기억하고싶은Spring bootdata jpaJPA [Spring Boot] OAuth2 + JWT + React 적용해보리기 오늘 팀원이랑 이야기를 해보다가 우려했던 일이 벌어졌다.. 우려했던 일이란? Jwt 관련 내용은 다음 글에 있습니다. 정보가 너무 많거나 구멍 나있는 부분이 너무나 많았다. 대표적으로 사용되는 서비스로는 Kakao, Google, Facebook, Naver 등이 있다. 대표적으로 3가지 방식이 있다. 프론트 + 백엔드 혼합으로 인증 과정을 수행 React에서는 Next-Auth라는 라이브러... Spring bootJWTspring securityoauth2JWT <Spring Security> Spring Security 주요 아키텍처 이해(1) 스프링 시큐리티는 모든 요청에 대한 인증 및 인가와 같은 보안 처리를 필터 기반으로 처리하고 있는데, 필터에서도 스프링의 기술(스프링 빈)을 사용하고 싶은 요구사항이 있다. 하지만, 서블릿 필터와 스프링 빈 간에 호출하고 사용해야 하는 경우가 생기는 데, 이 때 서블릿 필터는 DelegatingFilterProxy 클래스를 사용해서 스프링 빈에게 요청을 위임하고 그 결과 스프링 빈에서 구현한... DelegatingFilterProxyFilterChainProxySpringspring securitySecurityContextSpring bootauthenticationDelegatingFilterProxy MyBatis, log4jdbc로 console log 설정 * 링크 Maven , dependency 추가 Gradle , dependency 추가 src/main/resources 패키지 경로에 log4jdbc.log4j2.properties 파일을 생성한다. 생성한 log4jdbc.log4j2.properties 에 아래 처럼 설정값을 입력후 저장. .yml 방식으로 설정을 했으며 Mysql접속 정보 입력란에 변경이 필요하다. 아래처럼 일부명칭이... MyBatisIntelliJSpring bootmavenIntelliJ [Spring Boot] 컴포넌트 스캔 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 지금까지 스프링 빈을 등록할 때, @Bean 또는 <bean> 등을 통해 설정 정보에 직접 등록할 스프링 빈을 나열했다. 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 ... Spring bootSpring boot Instagram Clone Coding Backend #1 프로젝트 시작하기 위 사이트에서 스프링 부트 프로젝트를 쉽게 생성할 수 있다. 그 외에 언어, Spring Boot 버전, Project 정보들을 입력하면 프로젝트를 생성할 수 있다. Spring Initilizr 말고 IntelliJ에서도 프로젝트를 생성할 수 있다. 찾아보니, buildscript와 apply plugin 부분은 plugins 블록으로 간편하게 표현할 수 있다고 한다. 스프링으로 웹 개발을... Spring bootInstagram CloneprojectInstagram Clone [Spring Boot] 싱글톤 컨테이너 한마디로, 우리가 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성하는 것이다. 싱글톤 패턴은 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. 위에서 스프링 없는 순수한 DI 컨테이너는 서로 다른 참조값을 가지고 있었다. 하지만, 싱글톤 패턴을 적용한 결과 참조값이 같게 출력됐다. 싱글톤 패턴을 적용하면 고객의 요청이 올 때 마다... Spring bootSpring boot [Intellij] Spring boot+React(Gradle) 프로젝트만들기 Windows 10 환경에서 Intellij IDEA 2021.3.3 버전을 사용하였습니다. 1. Spring Initializr를 이용해 스프링 부트를 생성 start.Spring.io 를 접속하여 설정하여 Generate 를 해주어 파일을 사용합니다. 또는, Intellij 에서 Spring Initializr 를 활용할수 있습니다. 해당 글에서는 maven이 아닌 Gradle을 활용하고... ReactIntelliJSpring bootwebIntelliJ [Spring Boot] 클라이언트 전달 방식 ( API, MVC , 정적 content) Spring에서는 크게 세가지 전달 방식을 사용한다. MVC, 템플릿 엔진 본 글에서는 세 가지 전달 방식의 차이점에 대해 알아보도록 하겠습니다. content가 전달되는 방식은 요청과 전달 과정을 거칩니다. 전달 하는 부분에서 서버가 하는 일에 따라 방식이 나누어 지는 데, 정적 content 전달 방식에서는 서버는 사용자가 요청하는 content를 찾아서 전달만 합니다. MVC, 템플릿 ... Spring bootSpringSpring Embedded Kafka를 통한 Kafka 테스트 마이크로서비스 아키텍쳐 환경에서 서로 다른 도메인들간 분산 이벤트 처리를 위해 Kafka를 사용하는 경우가 많은데, 실제 운영하는 Kafka를 연동한 후 테스트를 진행하는 경우를 종종 목격한 적이 있습니다. 이는 외부 afka에 의존해 테스트를 진행하는 것이기 때문에 테스트의 안정성을 떨어뜨릴 수 있고, 외부 Kafka의 문제로 인해 테스트 구동이 제한될 수도 있다고 생각합니다. Spring... kafkaSpring boot테스트testEmbeddedEmbedded [Spring] Spring Boot + gradle + S3 + React.js 이미지 업로드 구현하기 - 1 (백엔드 구현) 오늘은 프로필 사진을 업로드 할 수 있는 기능을 구현해볼거예요 react 이번 포스팅에서는 React.js는 다루지 않을거고요, S3를 연동하기 이전에, AWS에서 버킷 생성과 IAM설정을 해줘야한다. 해당글에서는 저부분은 다루지 않으니 다른 블로그를 참고하길 바란다. S3에서 성공적으로 사용자 설정과 버킷 생성을 하고 나면, Spring boot에서 사용해야할 정보를 입력해야한다. appl... SpringS3Spring bootReactawsReact Interceptor를 활용한 접속자 정보 저장 Interceptor란 컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로채는 역할을 합니다.인터셉터는 관리자만 접근할 수 있는 관리자 페이지에 접근하기 전에 관리자 인증을 하는 용도로 활용될 수 있습니다. 호출 시점 Filter는 DispatcherServlet이 실행되기 전 , Interceptor는 DispatcherServlet이 실행된 ... InterceptorJavaSpring bootlogInterceptor [spring boot]DB 설정값 출력과 테스트에서 기본 DB 설정 오버라이드하는 법 📌 반드시 H2 DB가 의존성에 있어야 하며(pom.xml), scope 가 test 로 되어있어야 한다. 스프링부트 "테스트"의 경우, 원래 설정한 데이터베이스로 코드를 실행하지 않는다. (충격) 그렇다면 어떤 DB 로 테스트를 하는가? 바로 H2 데이터베이스의 인메모리 데이터베이스로 테스트를 진행한다. @AutoConfigureTestDatabase(replace = AutoConfigu... Spring bootSpring boot Instagram Clone Coding #2 DB와 JPA 회원은 여러 개의 포스트를 작성할 수 있다. 회원은 다른 회원을 팔로우할 수 있다. (하나의 유저는 여러 명을 팔로우할 수 있고, 여러 명한테 팔로우 될 수 있다.) 하나의 포스트는 여러 개의 이미지를 가질 수 있다. 포스트에는 여러 개의 댓글이 달릴 수 있다. 포스트에 좋아요를 누를 수 있다. 댓글에는 대댓글이 달릴 수 있다. 댓글에는 좋아요를 누를 수 있다. ORM(Object Relat... Spring bootDatabaseInstagram CloneprojectDatabase Spring boot 정리 회사에서 Java & Scala로 개발을 하고있지만 실제로 쓰고 있는 Spring 기능은 10%도 안쓰는거같다. 그래서 실력향상을 도모하고자 Spring-boot를 따로 공부하기로 했다. 해당 시리즈의 내용은 를 참고해서 작성되었다. Controller layer : UI에서 요청을 받고 응답을 전달한다. Service layer : 비즈니스 로직을 구현한다. Repository layer ... JavaSpring bootSpringJava Spring boot JPA 등록/수정/조회 API 제작 트랜잭션은 상황에 따라 여러개가 만들어질 수 있다. 하나의 트랜잭션은 commit(저장)되거나 rollback(철회) 될 수 있다. 독립성 : 하나의 트랜잭션은 다른 트랜잭션이 끼어들 수 없고, 마찬가지로 독립적임. 생성자로 Bean 객체를 받도록 하면 @Autowired와 동일한 효과를 볼 수 있다. HTTP에서 이러한 자원을 구별하는 ID는 strudent/1과 같은 HTTP URL이다.... JavaSpring bootJPAJPA Spring Boot + AWS RDS (MySQL) 연동하기 (1) 데이터베이스 생성 방식 : 표준 생성 (8) 보안 그룹 : 새로 생성 (9) 데이터베이스 옵션 - 초기 데이터베이스 이름 : demo (2) VPC 보안 그룹을 클릭해, 보안 그룹페이지로 이동합니다. ec2-security : (기존에 만들어둔) EC2 인스턴스의 보안 그룹의 이름 (3) "보안 그룹 생성"을 클릭합니다. (6) (기존 EC2 인스턴스가 있다면,) DB에 접근할 수 있... Spring bootDatabaseawsDatabase
JpaSystemException이 뭐야..? 걸음수에 따른 각 학교별 유저의 랭킹을 매번 조회하기에는 성능 저하가 크기 때문에 일정 간격으로 유저의 랭킹을 데이터베이스에 저장시키는 작업을 한다. 그 중에서도 데이터베이스에 좀 더 초점을 맞췄기 때문에 IdClass를 이용해 복합키를 표현했다. UserRank.java UserRankId.java 이런식으로 JPA에서 제공하는 메소드 쿼리를 이용해 유저 랭킹을 조회한다. 직접 postma... Javaback endSpring bootexception프로젝트trouble shootingJPAJPA Spring Entity 작성시 사용하는 어노테이션 1. @Entity 엔티티로 사용할 클래스에 엔티티임을 명시하는 어노테이션 2. @Table @Table(name = "board") name 속성을 이용해서 해당 엔티티가 매핑하는 데이터베이스 테이블이 무엇인지 지정 이렇게 작성된다면, 해당 Board 클래스는 데이터베이스에 "board" 테이블에 저장된다. 그렇다면 이 둘의 차이는 무엇일까? @Entity(name ="")의 경우 말그대로... Spring bootSpringSpring 배포 과정에서 발생했던 issue 모음 백엔드를 맡은 내가 배포 과정에서 겪었던 문제들과 이에 대한 해결 과정을 기록하며 추 후 작업 시 개선해야 할 점을 생각하고자 한다. local 환경의 IntelliJ 에서 Spring Boot를 build 한 뒤 이를 Dockerfile로 이미지화 하여 내 Docker Hub에 정상적으로 올렸다. 이 후 새로 만든 AWS EC2에서 docker를 설치 하고, Docker Hub에 올린 이미... awsaws ec2Spring bootdockerSpring boot Spring Boot 채팅 구현(SockJS,Stomp) 1. 환경 설정 및 기본 동작 구현 configureMessageBroker() subscribe, publish url을 설정합니다. registerStompEndpoints() SockJS 생성 endpoint를 지정합니다. 채팅창 화면과 스크립트 코드입니다. 화면에서 보낸 JSON data를 파라미터(MessageDTO)를 통해 받을수있습니다. convertAndSend() 메소드를 통해 첫번째 파라미터의 값(/topic... Spring bootSpring boot [Spring Boot] V-RIS 개발 일지(2) - MySQL 연동, Spring Data JPA를 이용한 간단한 회원 관리 시스템 및 오류 수정 우선 spring 프로젝트를 만들고 MySQL과의 연동을 위해 아래의 dependency를 build.gradle에 추가해준다. 그 후 application.properties에 아래의 코드를 추가한다. spring.jpa.hibernate.ddl-auto=[ ] create : 기존 테이블을 삭제하고 새로 생성 [ DROP + CREATE ] create-drop : CREATE 속성에 추... 웹 개발IntelliJSpring bootIntelliJ | 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 4.4 전체 조회 PostsRepository에 쿼리 추가 PostsRepository 인터페이스에 쿼리를 추가해야 한다. JPA에서 기본적으로 제공하지 않는 메소드는 쿼리를 작성해서 만들 수 있다. PostsService readOnly = true 조회 기능만 가능. 트랜잭션 범위는 유지하고 조회 기능만 남겨두기 때문에 조회 속도가 개선된다. PostsListResponseDto 변환 -> List로 반환... 스프링 부트와 AWS로 혼자 구현하는 웹 서비스Spring bootSpring boot AWS CodeDeploy를 이용한 자동 배포 시 환경변수 주입하기 + Spring Boot 이렇게 해두고 개발 서버에 환경변수를 등록해 놓았는데 CodeDeploy는 배포 과정에서 이 변수들을 주입받지 못하였다. 그래서 그냥 배포 후 실행할 스크립트를 서버에 저장해두고(이렇게 하면 변수들을 public한 곳에서 숨긴 채로 배포할 수 있으니까?) CodeDeploy의 hook이 실행될 때 그 파일을 실행하도록 하였는데 정상적으로 작동하지 않았다. 따라서 어쩔 수 없이 프로젝트 디렉토... awsCodeDeploySpring bootCodeDeploy Springboot Controller 테스트 해보기 1탄 (Mock, MockMvc) 실무에서 단위테스트로 간단한 진행만 하지 TDD로 개발은 하지 않고 있는데 개발하면 할 수록 중요성이 너무 느껴서 열심히 사용해 보려고 한다. 네트워크, 데이터베이스 등에 의존하고 있는 메서드를 테스트하기 위해 가짜 객체를 만들어서 진행하는 테스트 Mock 객체를 만드는 번거로움을 줄여주기 위한 프레임워크 @ExtendWith(MockitoExtension.class): Mockito의 Mo... Spring bootSpring boot Spring Template Engine Spring Template Engine은 view를 만드는데 사용합니다. Spring Boot가 자동적으로 인식을 해서 추가하며 사용자 정의 Template Engine을 사용하려면 직접 다 추가해줘야 합니다. 대표적으로 Spring이 자동적으로 지원하는 템플릿은 Thymeleaf Mustache Groovy 등이 있습니다. Spring이 등록하는 Bean Name을 보는법은 아래 코드와 ... Spring bootspring mvcSpringSpring 6편 JAVA spring boot study - MVC와 템플릿 엔진 mvc란 model / view / controller 의 개념입니다. view와 controller는 과거에 분리되어 있지 않았다고 합니다. (저는 2년차 주니어 개발자이기에 직접적으로 와닿진 않네요!) view에서 모든걸 다 했었습니다. 그것을 model1방식이라고 했다고 합니다. 과거에는 view안에서 비즈니스로직도 다 있고 굉장히 복잡했습니다.그래서 하나의 파일이 굉장히 커지고 유지보... Java템플릿 엔진Spring bootMVCJava [Spring Boot] 스프링 컨테이너와 스프링 빈 1. 스프링 컨테이너 생성 3. 스프링 빈 조회 - 기본 4. 스프링 빈 조회 - 동일한 타입이 둘 이상 5. 스프링 빈 조회 - 상속 관계 8. 스프링 빈 설정 메타 정보 - BeanDefinition 스프링 컨테이너 생성 ApplicationContext는 인터페이스이며, 스프링 컨테이너라 한다. 스프링 컨테이너는 XML을 기반 또는 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. ... Spring bootSpring boot 스프링 JPA 양방향 연관관계의 이해 - 영속성 전이 cascade commentList, postImageList, postLikeList 와 같은 일대다 리스트를 보면 cascade 옵션이 달려있는 것을 확인할 수 있다. comment(댓글) 의 경우 post(게시글) 가 삭제될 경우 post와 연관된 comment 가 연쇄적으로 삭제하기 위해 cascade = CascadeType.REMOVE 을 설정하였다. postImage(게시글 이미지)의 경우 생... JPASpring기록기억하고싶은Spring bootdata jpaJPA [Spring Boot] OAuth2 + JWT + React 적용해보리기 오늘 팀원이랑 이야기를 해보다가 우려했던 일이 벌어졌다.. 우려했던 일이란? Jwt 관련 내용은 다음 글에 있습니다. 정보가 너무 많거나 구멍 나있는 부분이 너무나 많았다. 대표적으로 사용되는 서비스로는 Kakao, Google, Facebook, Naver 등이 있다. 대표적으로 3가지 방식이 있다. 프론트 + 백엔드 혼합으로 인증 과정을 수행 React에서는 Next-Auth라는 라이브러... Spring bootJWTspring securityoauth2JWT <Spring Security> Spring Security 주요 아키텍처 이해(1) 스프링 시큐리티는 모든 요청에 대한 인증 및 인가와 같은 보안 처리를 필터 기반으로 처리하고 있는데, 필터에서도 스프링의 기술(스프링 빈)을 사용하고 싶은 요구사항이 있다. 하지만, 서블릿 필터와 스프링 빈 간에 호출하고 사용해야 하는 경우가 생기는 데, 이 때 서블릿 필터는 DelegatingFilterProxy 클래스를 사용해서 스프링 빈에게 요청을 위임하고 그 결과 스프링 빈에서 구현한... DelegatingFilterProxyFilterChainProxySpringspring securitySecurityContextSpring bootauthenticationDelegatingFilterProxy MyBatis, log4jdbc로 console log 설정 * 링크 Maven , dependency 추가 Gradle , dependency 추가 src/main/resources 패키지 경로에 log4jdbc.log4j2.properties 파일을 생성한다. 생성한 log4jdbc.log4j2.properties 에 아래 처럼 설정값을 입력후 저장. .yml 방식으로 설정을 했으며 Mysql접속 정보 입력란에 변경이 필요하다. 아래처럼 일부명칭이... MyBatisIntelliJSpring bootmavenIntelliJ [Spring Boot] 컴포넌트 스캔 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 지금까지 스프링 빈을 등록할 때, @Bean 또는 <bean> 등을 통해 설정 정보에 직접 등록할 스프링 빈을 나열했다. 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 ... Spring bootSpring boot Instagram Clone Coding Backend #1 프로젝트 시작하기 위 사이트에서 스프링 부트 프로젝트를 쉽게 생성할 수 있다. 그 외에 언어, Spring Boot 버전, Project 정보들을 입력하면 프로젝트를 생성할 수 있다. Spring Initilizr 말고 IntelliJ에서도 프로젝트를 생성할 수 있다. 찾아보니, buildscript와 apply plugin 부분은 plugins 블록으로 간편하게 표현할 수 있다고 한다. 스프링으로 웹 개발을... Spring bootInstagram CloneprojectInstagram Clone [Spring Boot] 싱글톤 컨테이너 한마디로, 우리가 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성하는 것이다. 싱글톤 패턴은 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. 위에서 스프링 없는 순수한 DI 컨테이너는 서로 다른 참조값을 가지고 있었다. 하지만, 싱글톤 패턴을 적용한 결과 참조값이 같게 출력됐다. 싱글톤 패턴을 적용하면 고객의 요청이 올 때 마다... Spring bootSpring boot [Intellij] Spring boot+React(Gradle) 프로젝트만들기 Windows 10 환경에서 Intellij IDEA 2021.3.3 버전을 사용하였습니다. 1. Spring Initializr를 이용해 스프링 부트를 생성 start.Spring.io 를 접속하여 설정하여 Generate 를 해주어 파일을 사용합니다. 또는, Intellij 에서 Spring Initializr 를 활용할수 있습니다. 해당 글에서는 maven이 아닌 Gradle을 활용하고... ReactIntelliJSpring bootwebIntelliJ [Spring Boot] 클라이언트 전달 방식 ( API, MVC , 정적 content) Spring에서는 크게 세가지 전달 방식을 사용한다. MVC, 템플릿 엔진 본 글에서는 세 가지 전달 방식의 차이점에 대해 알아보도록 하겠습니다. content가 전달되는 방식은 요청과 전달 과정을 거칩니다. 전달 하는 부분에서 서버가 하는 일에 따라 방식이 나누어 지는 데, 정적 content 전달 방식에서는 서버는 사용자가 요청하는 content를 찾아서 전달만 합니다. MVC, 템플릿 ... Spring bootSpringSpring Embedded Kafka를 통한 Kafka 테스트 마이크로서비스 아키텍쳐 환경에서 서로 다른 도메인들간 분산 이벤트 처리를 위해 Kafka를 사용하는 경우가 많은데, 실제 운영하는 Kafka를 연동한 후 테스트를 진행하는 경우를 종종 목격한 적이 있습니다. 이는 외부 afka에 의존해 테스트를 진행하는 것이기 때문에 테스트의 안정성을 떨어뜨릴 수 있고, 외부 Kafka의 문제로 인해 테스트 구동이 제한될 수도 있다고 생각합니다. Spring... kafkaSpring boot테스트testEmbeddedEmbedded [Spring] Spring Boot + gradle + S3 + React.js 이미지 업로드 구현하기 - 1 (백엔드 구현) 오늘은 프로필 사진을 업로드 할 수 있는 기능을 구현해볼거예요 react 이번 포스팅에서는 React.js는 다루지 않을거고요, S3를 연동하기 이전에, AWS에서 버킷 생성과 IAM설정을 해줘야한다. 해당글에서는 저부분은 다루지 않으니 다른 블로그를 참고하길 바란다. S3에서 성공적으로 사용자 설정과 버킷 생성을 하고 나면, Spring boot에서 사용해야할 정보를 입력해야한다. appl... SpringS3Spring bootReactawsReact Interceptor를 활용한 접속자 정보 저장 Interceptor란 컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로채는 역할을 합니다.인터셉터는 관리자만 접근할 수 있는 관리자 페이지에 접근하기 전에 관리자 인증을 하는 용도로 활용될 수 있습니다. 호출 시점 Filter는 DispatcherServlet이 실행되기 전 , Interceptor는 DispatcherServlet이 실행된 ... InterceptorJavaSpring bootlogInterceptor [spring boot]DB 설정값 출력과 테스트에서 기본 DB 설정 오버라이드하는 법 📌 반드시 H2 DB가 의존성에 있어야 하며(pom.xml), scope 가 test 로 되어있어야 한다. 스프링부트 "테스트"의 경우, 원래 설정한 데이터베이스로 코드를 실행하지 않는다. (충격) 그렇다면 어떤 DB 로 테스트를 하는가? 바로 H2 데이터베이스의 인메모리 데이터베이스로 테스트를 진행한다. @AutoConfigureTestDatabase(replace = AutoConfigu... Spring bootSpring boot Instagram Clone Coding #2 DB와 JPA 회원은 여러 개의 포스트를 작성할 수 있다. 회원은 다른 회원을 팔로우할 수 있다. (하나의 유저는 여러 명을 팔로우할 수 있고, 여러 명한테 팔로우 될 수 있다.) 하나의 포스트는 여러 개의 이미지를 가질 수 있다. 포스트에는 여러 개의 댓글이 달릴 수 있다. 포스트에 좋아요를 누를 수 있다. 댓글에는 대댓글이 달릴 수 있다. 댓글에는 좋아요를 누를 수 있다. ORM(Object Relat... Spring bootDatabaseInstagram CloneprojectDatabase Spring boot 정리 회사에서 Java & Scala로 개발을 하고있지만 실제로 쓰고 있는 Spring 기능은 10%도 안쓰는거같다. 그래서 실력향상을 도모하고자 Spring-boot를 따로 공부하기로 했다. 해당 시리즈의 내용은 를 참고해서 작성되었다. Controller layer : UI에서 요청을 받고 응답을 전달한다. Service layer : 비즈니스 로직을 구현한다. Repository layer ... JavaSpring bootSpringJava Spring boot JPA 등록/수정/조회 API 제작 트랜잭션은 상황에 따라 여러개가 만들어질 수 있다. 하나의 트랜잭션은 commit(저장)되거나 rollback(철회) 될 수 있다. 독립성 : 하나의 트랜잭션은 다른 트랜잭션이 끼어들 수 없고, 마찬가지로 독립적임. 생성자로 Bean 객체를 받도록 하면 @Autowired와 동일한 효과를 볼 수 있다. HTTP에서 이러한 자원을 구별하는 ID는 strudent/1과 같은 HTTP URL이다.... JavaSpring bootJPAJPA Spring Boot + AWS RDS (MySQL) 연동하기 (1) 데이터베이스 생성 방식 : 표준 생성 (8) 보안 그룹 : 새로 생성 (9) 데이터베이스 옵션 - 초기 데이터베이스 이름 : demo (2) VPC 보안 그룹을 클릭해, 보안 그룹페이지로 이동합니다. ec2-security : (기존에 만들어둔) EC2 인스턴스의 보안 그룹의 이름 (3) "보안 그룹 생성"을 클릭합니다. (6) (기존 EC2 인스턴스가 있다면,) DB에 접근할 수 있... Spring bootDatabaseawsDatabase